/**
 * Author@ Cheng Feitian
 * Date: 2021-4-2
 * Description: 函数调用运算符重载---又称为仿函数
 */

#include <algorithm>
#include <iostream>
#include <string>

using namespace std;
const int maxn = 1024;

//打印输出类
class MyPrint
{
public:
    void operator()(string str)
    {
        cout << str << endl;
    }
};

void MyPrint02(string test)
{
    cout << test << endl;
}

//仿函数非常灵活，没有固定写法
//加法类

class MyAdd
{
public:

    int operator()(int num1 ,int num2){
        return num1 + num2;
    }
};

void test01()
{
    MyPrint myPrint;

    myPrint("Hello World!"); //由于使用起来非常类似与函数调用，因此称为仿函数
    MyPrint02("Hello World!");
}

void test02(){
    MyAdd myAdd;
    int ret = myAdd(100,100);

    cout << "ret = " << ret << endl;

    //匿名函数对象
    cout << MyAdd()(100,100) << endl;
}

int main()
{
    // test01();
    test02();
    return 0;
}
